1 REM ************************ 2 REM * * 3 REM * GRAPHICS FACTORY * 4 REM * ANIMATION DEMO * 5 REM * "ROLL 'EM", (C) 1989 * 6 REM * BY: M.H.WESTERWEEL * 7 REM * * 8 REM ************************ 9 : 10 REM ACTION CONTROL UNIT 15 REM =================== 20 : 25 POKE53280,14:POKE646,14:POKE53281,6 26 GOSUB1245:FI$="CR/ROLL*":GOSUB1145 30 PRINTS1$SPC(8)I$" [144]"; 35 GETYN$:IFYN$<>"N"ANDYN$<>"Y"THEN35 40 PRINTYN$"[145]":IFYN$="N"THEN50 45 GOSUB1645:POKE53272,21 50 FI$="CR/ACTION DICE":GOSUB1145 55 : 60 GOSUB970:CO=1:X=1:Q=Q+1:IFQ>NTHENQ=1 65 FORSB=4TO10:SB(SB)=0:NEXT:OD=0:DO=0 70 : 75 RS=0:GOSUB860 80 IFX=1THENGOSUB155:GOSUB270 85 : 90 :FOROP=3TO5:PRINT"[129]"OP$(OP):NEXT 95 :PRINT"[146][144]"D1$(D1)D2$(7-D2) 100 GOSUB895:ONCOGOTO105,115 105 GOSUB425:IFX<>2THENGOSUB1195 110 GOTO120 115 GOSUB560:IFDT<4ORDT>10THENGOSUB1195 120 PRINT"[146][144]"DT$(DT):ONCOGOTO125,90 125 ONXGOTO60,75 130 : 135 REM ENTER BET 140 REM ========= 145 : 150 REM NUMBER ENTRY PROCESSOR 155 PRINTS1$"[156] [144]RETURN[156] ACCEPTS "; 160 PRINT"BET, [144]DEL[156] DELETES BET.[145]" 165 BT$="":PRINTFB$(2)ER$""; 170 GETTB$:IFTB$=""THENGOSUB240:GOTO170 175 IFTB$<>CHR$(13)ORBT$=""THEN190 180 BT=VAL(BT$):IFBT<5THEN165 185 PRINT" "S1$"[156]"Z$"[145]":BT$="":RETURN 190 IFTB$<>CHR$(20)ORBT$=""THEN205 195 BT$=LEFT$(BT$,LEN(BT$)-1) 200 PRINT"[157][144]? [157][157]"; 205 IFTB$<"0"ORTB$>"9"THEN220 210 IFLEN(BT$)>2THEN220 215 BT$=BT$+TB$:PRINTTB$"[144]?[157]"; 220 IFBT$=""ORLEFT$(BT$,1)="0"THEN165 225 GETTB$:GOTO175 230 : 235 REM FLASHING CURSOR 240 FORRV=1TO2:PRINTV$(RV)"[144]?[157]"; 245 FORW=1TO100:NEXTW:NEXT:RETURN 250 : 255 REM GET PASS OR NO PASS 260 REM =================== 265 : 270 GETPN$ 275 IFPN$="P"THENPRINTPN$(1):GOTO295 280 IFPN$="N"THENPRINTPN$(2)X$:GOTO295 285 FORPN=1TO2:PRINTPN$(PN) 290 FORW=1TO100:NEXTW:NEXT:GOTO270 295 RETURN 300 : 305 REM GET COLLECT OR GAMBLE 310 REM ===================== 315 : 320 GETCG$ 325 IFCG$="C"THENPRINTCG$(1):GOTO345 330 IFCG$="G"THENPRINTCG$(2):GOTO345 335 FORCG=1TO2:PRINTCG$(CG) 340 FORW=1TO100:NEXTW:NEXT:GOTO320 345 RETURN 350 : 355 REM GET GAMBLE OR ROLL 360 REM ================== 365 : 370 GETGR$ 375 IFGR$="G"THENPRINTGR$(1):GOTO395 380 IFGR$="R"THENPRINTGR$(2):GOTO395 385 FORGR=1TO2:PRINTGR$(GR) 390 FORW=1TO100:NEXTW:NEXT:GOTO370 395 RETURN 400 : 405 REM COME OUT ROLL 410 REM ============= 415 : 420 REM COME OUT = PASS 425 IFPN$<>"P"THEN455 430 IFDT>7THEN440 435 ONDTGOTO430,480,480,520,520,520,490 440 ON(DT-7)GOTO520,520,520,480,480 445 : 450 REM COME OUT = NO PASS 455 IFDT>7THEN465 460 ONDTGOTO425,490,490,520,520,520,480 465 ON(DT-7)GOTO520,520,520,490,490 470 : 475 REM COME OUT : WIN/LOSS 480 RS=-BT:B(Q)=B(Q)+RS:GOSUB860 485 GOSUB1020:X=1:GOTO530 490 RS=BT:GOSUB860:FORPP=1TO5:GOSUB1055 495 NEXT:X=2:B(Q)=B(Q)+RS:GOSUB320 500 GOSUB860:IFCG$<>"G"THEN530 505 BT=2*BT:GOSUB860:GOTO530 510 : 515 REM COME OUT : POINT MADE 520 OD=BT:DO=OD:R=1:GOSUB815 525 X=1:CO=2:SB(DT)=BT:TB=BT:BT=0 530 RETURN 535 : 540 REM POINTS ROUTINE 545 REM ============== 550 : 555 REM (PASS) POINTS BEFORE 7 560 IFPN$<>"P"THEN590 565 IFDT>7THEN575 570 ONDTGOTO560,790,790,615,615,615,700 575 ON(DT-7)GOTO615,615,615,790,790 580 : 585 REM (NO PASS) 7 BEFORE POINTS 590 IFDT>7THEN600 595 ONDTGOTO560,790,790,615,615,615,730 600 ON(DT-7)GOTO615,615,615,790,790 605 : 610 REM GAMBLE OR ROLL? 615 IFSB(DT)=0THEN630 620 IFPN$="N"THEN700 625 IFPN$="P"THEN655 630 GOSUB370:IFGR$="R"THEN790 635 SB(DT)=TB:OD=SB(DT):DO=DO+TB 640 R=1:GOSUB815:GOTO790 645 : 650 REM (PASS=WIN) COLLECT OR GAMBLE? 655 FORW=1TO5:GOSUB1055:NEXT 660 RS=SB(DT)*PY(DT):RS=INT(RS+.5) 665 GOSUB860:GOSUB320:B(Q)=B(Q)+RS 670 IFCG$<>"G"THENRS=0:GOSUB860:GOTO790 675 SB(DT)=SB(DT)+RS:OD=SB(DT):DO=DO+RS 680 RS=0:R=1:GOSUB815:GOSUB860:GOTO790 685 : 690 REM (PASS=LOSS) : SEVEN OUT 695 REM (NO PASS=LOSS) : POINT REPEATS 700 GOSUB1020:RS=0:FORSB=4TO10 705 RS=RS-SB(SB):NEXT:B(Q)=B(Q)+RS 710 GOSUB860:GOSUB1195:CO=1 715 GOSUB1165:X=1:GOTO790 720 : 725 REM (NO PASS=WIN) : 7 BEFORE POINT 730 FORW=1TO5:GOSUB1055:NEXT:CT=0 735 RS=0:FORSB=4TO10:PY=SB(SB)*(YP(SB)) 740 RS=RS+PY:IFSB(SB)>0THENCT=CT+1 745 NEXT:RS=INT((CT*RS)+.5) 750 GOSUB860:GOSUB320:B(Q)=B(Q)+RS:RS=0 755 GOSUB860:IFCG$<>"G"THEN785 760 DO=0:FORSB=4TO10:PY=SB(SB)*(YP(SB)) 765 SB(SB)=SB(SB)+INT((CT*PY)+.5) 770 DT=SB:IFSB(SB)=0THEN780 775 OD=SB(SB):DO=DO+SB(SB):R=2:GOSUB815 780 NEXT:RS=0:GOSUB860 785 CT=0:PRINT"[146][144]"DT$(7) 790 RETURN 795 : 800 REM PRINT SIDE BET ON POINT BOX 805 REM =========================== 810 : 815 PRINTFB$(2)ER$FB$(3)""DO 820 OD$=STR$(OD) 825 OD$=RIGHT$(OD$,LEN(OD$)-1) 830 PRINTV$(R)DT$(DT)"[145][145][145][157][157][157][157]"OD$ 835 RETURN 840 : 845 REM PRINT RESULTS 850 REM ============= 855 : 860 PRINTFB$(1)ER$" "PL$(Q)FB$(2)ER$;BT 865 PRINTFB$(3)ER$;DO;FB$(4)ER$;RS 870 PRINTFB$(5)ER$;B(Q):RETURN 875 : 880 REM SHAKE, RATTLE & ROLL 885 REM ==================== 890 : 895 D1=INT(6*RND(1))+1 900 D2=INT(6*RND(1))+1 905 FORD=1TO3:FORDD=1TO6 910 PRINTV$(D)D1$(DD)D2$(7-DD) 915 POKE54296,15:POKE54296,0 920 NEXT:NEXT:FORDD=1TO6 925 IFDD<>D1THENPRINTD1$(DD) 930 IFDD<>D2THENPRINTD2$(7-DD) 935 POKE54296,15:POKE54296,0:NEXT 940 DT=(7-D1)+(7-D2) 945 PRINT"[144]"DT$(DT):RETURN 950 : 955 REM RESET SCREEN 960 REM ============ 965 : 970 FORTD=2TO12:PRINT"[146][144]"DT$(TD); 975 PRINT"[145][145][145][157][157][157][157] ":NEXT:CO=1 980 FOROP=1TO5:PRINT"[129]"OP$(OP):NEXT 985 PRINT"[146][144]"D1$(D1)D2$(7-D2)Y$ 990 RETURN 995 : 1000 REM SOUND EFFECTS 1005 REM ============= 1010 : 1015 REM "BUZZ" FOR LOSS 1020 POKES+3,10:POKES+2,5:POKES+5,15 1025 POKES+6,0:POKES+24,15:POKES+1,5 1030 POKES,127:POKES+4,65:FORT=1TO500 1035 NEXT:POKES+4,64:FORT=1TO100:NEXT 1040 RETURN 1045 : 1050 REM "PING" FOR WIN 1055 POKES+3,120:POKES+2,127:POKES+5,10 1060 POKES+6,10:POKES+24,15:POKES+1,90 1065 POKES,127:POKES+4,65:FORT=1TO100 1070 NEXT:POKES+4,64:FORT=1TO50:NEXT 1075 RETURN 1080 : 1085 REM PRINT CANVAS 1090 REM ============ 1095 : 1100 ZZ=0:PRINT"";:FORZ=1TO24 1105 PRINT"[156]"Z$:ZZ=ZZ+40 1110 POKE55295+ZZ,4:POKE1023+ZZ,160 1115 NEXT:PRINT"[156]"Z$"[145]":POKE56295,4 1120 POKE2023,160:RETURN 1125 : 1130 REM PRINT SCREEN FILES 1135 REM ================== 1140 : 1145 OPEN8,8,8,"0:"+FI$+",S,R" 1150 FORF=1TO23:INPUT#8,F1$:INPUT#8,F2$ 1155 FL$(F)=F1$+F2$:NEXT:CLOSE8 1160 GOSUB1100 1165 PRINT"";:FORF=1TO23 1170 PRINT""FL$(F):NEXT:RETURN 1175 : 1180 REM SPACE BAR PROMPT 1185 REM ================ 1190 : 1195 PRINTS1$SPC(8)SB$"...[145]" 1200 FORW=1TO100:NEXTW 1205 PRINTS1$SPC(8)BS$"...[145]" 1210 FORW=1TO100:NEXTW 1215 GETDR$:IFDR$<>" "THEN1195 1220 PRINTS1$"[156]"Z$"[145]":RETURN 1225 : 1230 REM ENTER PLAYERS 1235 REM ============= 1240 : 1245 PRINT"[147] NUMBER OF PLAYERS (1-9)"; 1250 INPUTN$:N=VAL(N$) 1255 IFN<1ORN>9THEN1245 1260 FORNN=1TON:PRINT"[147] PLAYER";NN; 1265 INPUTPL$(NN):PL=LEN(PL$(NN)) 1270 IFPL>0ANDPL<10THEN1285 1275 PRINT" ...9 LETTERS MAX!!!" 1280 NN=NN-1:FORW=1TO1500:NEXTW 1285 NEXT:PRINT"[147]" 1290 : 1295 REM SET UP GRAPHICS 1300 REM =============== 1305 : 1310 REM INITIALIZE: 1315 REM GRAFIX, RND, SOUNDS, PAY OUTS 1320 DIMFL$(23),DT$(12):T=RND(-TI) 1325 POKE53281,15:POKE53280,4 1330 FORZ=1TO39:Z$=Z$+" ":NEXT 1335 GOSUB1100:PRINT"[146][144]"SPC(12); 1340 PRINT" SETTING UP... " 1345 S=54272:FORL=STOS+24:POKEL,0:NEXT 1350 PY(4)=2:PY(5)=1.5:PY(6)=1.2 1355 PY(10)=2:PY(9)=1.5:PY(8)=1.2 1360 YP(4)=.5:YP(5)=.6667:YP(6)=.8333 1365 YP(10)=.5:YP(9)=.6667:YP(8)=.8333 1370 : 1375 REM FIELD SQUARE STRINGS 1380 S1$="" 1385 FORR1=1TO36:R1$=R1$+"":NEXT 1390 T1$=" 2 3 4 5 6 7 8 9101112" 1395 Q$="[157][157][157][157]":FORDT=2TO12:READS2,R2 1400 S2$=LEFT$(S1$,S2) 1405 R2$=LEFT$(R1$,R2) 1410 M$=MID$(T1$,(DT-1)*2-1,2) 1415 T2$="[207][183][183][208]"+Q$+"[180]"+M$+"[170]"+Q$+"[204][175][175][186]" 1420 DT$(DT)=S2$+R2$+T2$:NEXT 1425 DATA 10,6,11,10,5,6,4,10,3,14,11 1430 DATA 18,3,22,4,26,5,30,11,26,10,30 1435 : 1440 REM DICE FACE STRINGS 1445 A$=" ":B$=" [209]":C$=" [209] " 1450 D$="[209] ":E$="[209] [209]":F$="[157][157][157]" 1455 DD$(1)=A$+F$+C$+F$+A$ 1460 DD$(2)=B$+F$+A$+F$+D$ 1465 DD$(3)=B$+F$+C$+F$+D$ 1470 DD$(4)=E$+F$+A$+F$+E$ 1475 DD$(5)=E$+F$+C$+F$+E$ 1480 DD$(6)=E$+F$+E$+F$+E$ 1485 FORDD=1TO6:S2$=LEFT$(S1$,4*DD-3) 1490 D1$(DD)=S2$+""+DD$(7-DD) 1495 D2$(DD)=S2$+R1$+DD$(DD):NEXT 1500 V$(1)="[144]":V$(2)="[146][144]":V$(3)="[144]" 1505 : 1510 REM FEEDBACK & OPTION STRINGS 1515 OP$="PNCGR":FOROP=1TO5 1520 OP$(OP)=MID$(OP$,OP,1) 1525 S2$=LEFT$(S1$,OP+17) 1530 FB$(OP)=S2$+LEFT$(R1$,14) 1535 OP$(OP)=S2$+LEFT$(R1$,26)+OP$(OP) 1540 NEXT:ER$=" [157][157][157][157][157][157][157][157][157][157]" 1545 PN$(1)="[144]"+OP$(1)+"[129]"+OP$(2) 1550 PN$(2)="[129]"+OP$(1)+"[144]"+OP$(2) 1555 CG$(1)="[144]"+OP$(3)+"[129]"+OP$(4) 1560 CG$(2)="[129]"+OP$(3)+"[144]"+OP$(4) 1565 GR$(1)="[144]"+OP$(4)+"[129]"+OP$(5) 1570 GR$(2)="[129]"+OP$(4)+"[144]"+OP$(5) 1575 : 1580 SB$="[156]HIT [144]SPACER[156] TO CONTINUE" 1585 BS$="[156]HIT [144][146]SPACER[156] TO CONTINUE" 1590 X$="[146][144]1/2[145]2/3" 1595 X$=X$+"[145]5/65/62/31/2" 1600 Y$="[144]2/1[145]3/2" 1605 Y$=Y$+"[145]6/56/53/22/1" 1610 I$="[156]INSTRUCTIONS [144]Y[156]ES/[144]N[156]O?..." 1615 FF$="[144][198]1[156]:FORWARD, [144][198]3[156]:BACKWARD" 1620 RT$=CHR$(13)+"":RETURN 1625 : 1630 REM READ/PRINT INSTRUCTIONS 1635 REM ======================= 1640 : 1645 DIMA$(78):OPEN8,8,8,"0:INSTR*,S,R" 1650 FORA=1TO78:INPUT#8,A$,B$:AB$=A$+B$ 1655 A$(A)=AB$:NEXT:CLOSE8:FI$="CR/LC*" 1660 GOSUB1145:POKE53272,23 1665 : 1670 P3=0:FORP=1TO5:J=17:IFP=5THENJ=10 1675 PRINT""SPC(35)"[146][144]";P;"" 1680 FORP2=1TOJ:P3=P3+1:PRINTRT$; 1685 M=VAL(LEFT$(A$(P3),3)):FORM2=1TOM 1690 M$=MID$(A$(P3),3*M2+1,3) 1695 PRINTCHR$(VAL(M$));:NEXT:NEXT 1700 : 1705 PRINTS1$"[145]"SPC(8)FF$ 1710 GETG$:IFG$=""THEN1710 1715 IFG$=CHR$(133)THEN1730 1720 IFG$<>CHR$(134)ORP3<18THEN1710 1725 P=P-2:P3=P3-(J+17) 1730 GOSUB1165:NEXT:PRINTS1$"[145][156]"Z$ 1735 RETURN 4975 : 4980 END 4985 REM MODIFY PROGRAM 4990 REM ============== 4995 : 5000 SAVE"RE(2)",8:OPEN15,8,15 5005 PRINT#15,"S0:ROLL 'EM" 5010 PRINT#15,"R0:ROLL 'EM=RE(2)" 5015 CLOSE15:END